export interface LanguageService {
    syntaxCheck: (editor: AceAjax.Editor) => void;
    complete: (
        editor: AceAjax.Editor,
        session: AceAjax.IEditSession,
        pos: AceAjax.Position,
        prefix: string,
        callback: (errors: any[], wordList: autoCompleteWordList[]) => void
    ) => void;
    dispose: () => void;
}

type RavenAceModes =
    | "raven_diff"
    | "checkNumber"
    | "checkNumericKey"
    | "json_parse_with_number_check"
    | "json_newline_friendly_highlight_rules"
    | "json_newline_friendly"
    | "raven_document_diff"
    | "raven_document_highlight_rules"
    | "raven_document_newline_friendly_highlight_rules"
    | "raven_document_newline_friendly"
    | "raven_document_worker"
    | "raven_document"
    | "ravenMapLinq_highlight_rules"
    | "ravenMapLinq"
    | "ravenReduceLinq_highlight_rules"
    | "ravenReduceLinq"
    | "rql_highlight_rules"
    | "rql";

export type AceEditorMode =
    | RavenAceModes
    | "abap"
    | "abc"
    | "actionscript"
    | "ada"
    | "apache_conf"
    | "applescript"
    | "asciidoc"
    | "assembly_x86"
    | "autohotkey"
    | "batchfile"
    | "bro"
    | "c9search"
    | "c_cpp"
    | "cirru"
    | "clojure"
    | "cobol"
    | "coffee"
    | "coldfusion"
    | "csharp"
    | "csound_document"
    | "csound_orchestra"
    | "csound_score"
    | "css"
    | "curly"
    | "d"
    | "dart"
    | "diff"
    | "django"
    | "dockerfile"
    | "dot"
    | "drools"
    | "eiffel"
    | "ejs"
    | "elixir"
    | "elm"
    | "erlang"
    | "forth"
    | "fortran"
    | "ftl"
    | "gcode"
    | "gherkin"
    | "gitignore"
    | "glsl"
    | "gobstones"
    | "golang"
    | "graphqlschema"
    | "groovy"
    | "haml"
    | "handlebars"
    | "haskell"
    | "haskell_cabal"
    | "haxe"
    | "hjson"
    | "html"
    | "html_elixir"
    | "html_ruby"
    | "ini"
    | "io"
    | "jack"
    | "jade"
    | "java"
    | "javascript"
    | "json"
    | "jsoniq"
    | "jsp"
    | "jssm"
    | "jsx"
    | "julia"
    | "kotlin"
    | "latex"
    | "lean"
    | "less"
    | "liquid"
    | "lisp"
    | "live_script"
    | "livescript"
    | "logiql"
    | "lsl"
    | "lua"
    | "luapage"
    | "lucene"
    | "makefile"
    | "markdown"
    | "mask"
    | "matlab"
    | "mavens_mate_log"
    | "maze"
    | "mel"
    | "mips_assembler"
    | "mipsassembler"
    | "mushcode"
    | "mysql"
    | "nix"
    | "nsis"
    | "objectivec"
    | "ocaml"
    | "pascal"
    | "perl"
    | "pgsql"
    | "php"
    | "pig"
    | "powershell"
    | "praat"
    | "prolog"
    | "properties"
    | "protobuf"
    | "python"
    | "r"
    | "razor"
    | "rdoc"
    | "red"
    | "rhtml"
    | "rst"
    | "ruby"
    | "rust"
    | "sass"
    | "scad"
    | "scala"
    | "scheme"
    | "scss"
    | "sh"
    | "sjs"
    | "smarty"
    | "snippets"
    | "soy_template"
    | "space"
    | "sparql"
    | "sql"
    | "sqlserver"
    | "stylus"
    | "svg"
    | "swift"
    | "swig"
    | "tcl"
    | "tex"
    | "text"
    | "textile"
    | "toml"
    | "tsx"
    | "turtle"
    | "twig"
    | "typescript"
    | "vala"
    | "vbscript"
    | "velocity"
    | "verilog"
    | "vhdl"
    | "wollok"
    | "xml"
    | "xquery"
    | "yaml";
